package utils

import (
	"crypto/md5"
	"encoding/hex"
	"io"
	"log"
	"os"
)

// 文件md5
func GetFileMd5(filePath string) string {
	// 打开文件
	file, err := os.Open(filePath)
	if err != nil {
		log.Fatal(err)
	}
	defer file.Close()

	// 创建 MD5 哈希对象
	hash := md5.New()

	// 将文件内容拷贝到哈希对象
	_, err = io.Copy(hash, file)
	if err != nil {
		log.Fatal(err)
	}

	// 计算并输出 MD5 值
	md5Hash := hash.Sum(nil)
	return hex.EncodeToString(md5Hash)
}

// 字符串的md5
func GetStringMd5(str string) string {
	// 将输入字符串转换为字节数组
	data := []byte(str)

	// 创建 MD5 哈希对象
	hash := md5.New()

	// 计算哈希值
	hash.Write(data)

	// 获取计算结果
	hashValue := hash.Sum(nil)

	// 将哈希结果转换为十六进制字符串
	md5Value := hex.EncodeToString(hashValue)

	return md5Value
}
